#include <stdio.h>
#include <stdlib.h>

// 函数：将整数转换为8位字节串
void int_to_bytes(int x, int mlen, unsigned char *M) {
    for (int i = 0; i < mlen; i++) {
        M[i] = (x >> (8 * (mlen - 1 - i))) & 0xFF;
    }
}

int main() {
    int x;
    int mlen;

    // 输入非负整数x和期望的8位字节串长度mlen
    printf("请输入非负整数x：");
    scanf("%d", &x);
    printf("请输入期望的8位字节串长度mlen：");
    scanf("%d", &mlen);

    // 检查基本限制
    if (x >= (1 << (8 * mlen))) {
        printf("超出范围，无法转换。\n");
        return 1;
    }

    // 分配内存用于存储8位字节串
    unsigned char *M = (unsigned char *)malloc(mlen);
    if (M == NULL) {
        printf("内存分配失败。\n");
        return 1;
    }

    // 转换整数为8位字节串
    int_to_bytes(x, mlen, M);

    // 输出8位字节串
    printf("转换后的8位字节串：");
    for (int i = 0; i < mlen; i++) {
        printf("%02X ", M[i]);
    }
    printf("\n");

    // 释放内存
    free(M);

    return 0;
}
